package com.his.utils;

import com.his.common.Const;
import com.his.entity.HisUser;
import com.his.entity.Patient;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;

public final class MyUtil {

    private MyUtil() {
    }

    /**
     * 添加cookis的方法
     *
     * @param key      键
     * @param value    值
     * @param minute   有效时间
     * @param response 响应
     */
    public static void setCookie(String key, String value, int minute, HttpServletResponse response) {
        Cookie cookie = new Cookie(key, value);
        cookie.setMaxAge(minute * 60);
        cookie.setPath("/");
        response.addCookie(cookie);
    }


    public static <T> boolean hasContent(T t, T[] arr) {
        for (T t1 : arr) {
            if (t1 == t || t1.equals(t)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 格式化时间 格式为 yyyy-MM-dd
     *
     * @param date 传递的时间
     * @return 格式化后的时间字符串
     */
    public static String dateFormat(Date date) {
        return new SimpleDateFormat("yyyy-MM-dd").format(date);
    }

    /**
     * 获取住院编号的方法
     *
     * @return 住院编号
     */
    public static String getNo() {
        return "CD" + System.currentTimeMillis();
    }

    /**
     * 获取token中的用户id
     */
    public static int getUserByToken(String token) throws Exception {
        Object o = JWTUtil.parserToken(token, Const.PUBLIC_KEY);
        if (o instanceof HisUser) {
            return ((HisUser) o).getId();
        }
        return ((Patient) o).getId();
    }

    /**
     * 获取token中的用户
     */
    public static HisUser getUser(String token) throws Exception {
        Object o = JWTUtil.parserToken(token, Const.PUBLIC_KEY);
        return ((HisUser) o);
    }

    /**
     * 获取随机数
     *
     * @param min 最小值
     * @param max 最大值
     * @return 随机值
     */
    public static int getRandom(int min, int max) {
        return (int) (Math.random() * (max - min - 1) + min);
    }
}
